﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows;
using System.Windows.Documents;
using DevExpress.Xpf.Core;
using ThanNhanTao.Server;
using ThanNhanTao.Server.Entities;
using ThanNhanTao.Report;
using DevExpress.Xpf.Printing;
using System.Configuration;
using ThanNhanTao.CommonControl;


namespace ThanNhanTao
{
    /// <summary>
    /// Interaction logic for frmThongKeTongBNChayThan.xaml
    /// </summary>
    public partial class frmThongKeTongBNChayThan : DXWindow
    {
        public frmThongKeTongBNChayThan()
        {
            InitializeComponent();
            try
            {
                cboKhuVuc.SelectedIndex = 0;
                datePickerNgayLamViec.DateTime = DateTime.Now;
                datePickerDenNgay.DateTime = DateTime.Now;
                List<Dm_YeuCau> listDmYeuCau = new List<Dm_YeuCau>();
                listDmYeuCau.Insert(0, new Dm_YeuCau
                {
                    MaYeuCau = "",
                    TenYeuCau = "-- Tất cả --",
                    LaChayThan = true
                });
                listDmYeuCau.Insert(1, new Dm_YeuCau
                {
                    MaYeuCau = "1",
                    TenYeuCau = "Nội trú",
                    LaChayThan = true
                });
                listDmYeuCau.Insert(2, new Dm_YeuCau
                {
                    MaYeuCau = "2",
                    TenYeuCau = "Ngoại trú",
                    LaChayThan = true
                });
                listDmYeuCau.Insert(3, new Dm_YeuCau
                {
                    MaYeuCau = ConfigurationManager.AppSettings["RightClick2"].ToString(),
                    TenYeuCau = "Nội trú ủy ban",
                    LaChayThan = true
                });
                listDmYeuCau.Insert(4, new Dm_YeuCau
                {
                    MaYeuCau = ConfigurationManager.AppSettings["RightClick3"].ToString(),
                    TenYeuCau = "Nội trú góp vốn",
                    LaChayThan = true
                });
                listDmYeuCau.Insert(5, new Dm_YeuCau
                {
                    MaYeuCau = ConfigurationManager.AppSettings["RightClick4"].ToString(),
                    TenYeuCau = "Ngoại trú ủy ban",
                    LaChayThan = true
                });
                listDmYeuCau.Insert(6, new Dm_YeuCau
                {
                    MaYeuCau = ConfigurationManager.AppSettings["RightClick5"].ToString(),
                    TenYeuCau = "Ngoại trú góp vốn",
                    LaChayThan = true
                });
                cboLoaiChay.ItemsSource = listDmYeuCau;
            }
            catch (Exception)
            {
                DXMessageBox.Show("Thiết lập thông tin thống kê không thành công.", "Thông báo lỗi", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }

        private void HienThiDanhSachBenhNhan(DateTime ngayLamViec,DateTime denNgay,string khuVuc)
        {
            try
            {
                string rightClick2 = ConfigurationManager.AppSettings["RightClick2"].ToString();
                string rightClick3 = ConfigurationManager.AppSettings["RightClick3"].ToString();
                string rightClick4 = ConfigurationManager.AppSettings["RightClick4"].ToString();
                string rightClick5 = ConfigurationManager.AppSettings["RightClick5"].ToString();
                Dm_YeuCau dmYeuCau = cboLoaiChay.EditValue as Dm_YeuCau;
                List<BenhNhanEntities> chayThanTemple = new List<BenhNhanEntities>();
                if (radTatCa.IsChecked.Value)
                {
                    chayThanTemple = new PhieuChayThanBll().GetDanhSachBenhNhanChayThanTheoNgay(ngayLamViec, denNgay, khuVuc, dmYeuCau.MaYeuCau, cboLoaiChay.SelectedIndex
                                                            , rightClick2, rightClick3, rightClick4, rightClick5, cboLoaiBenhNhan.SelectedIndex, cboThongKe.SelectedIndex);
                }
                else if (radDangDieuTri.IsChecked.Value)
                {
                    chayThanTemple = new PhieuChayThanBll().GetDanhSachBenhNhanChayThanTheoNgay(ngayLamViec, denNgay, khuVuc, dmYeuCau.MaYeuCau, cboLoaiChay.SelectedIndex
                                                            , rightClick2, rightClick3, rightClick4, rightClick5, cboLoaiBenhNhan.SelectedIndex, cboThongKe.SelectedIndex);
                    //Trường hợp thống kê bệnh nhân chạy thận
                    if(cboThongKe.SelectedIndex == 0)
                    {
                        chayThanTemple = chayThanTemple.FindAll(c => c.NgayRaVien == null || c.NgayChay <= c.NgayRaVien);
                    }
                    else //Trường hợp thống kê bệnh nhân không chạy thận
                    {
                        chayThanTemple = chayThanTemple.FindAll(c => c.NgayRaVien == null || (ThanNhanTaoGlobal.NgayLamViec >= c.NgayVaoVien && ThanNhanTaoGlobal.NgayLamViec <= c.NgayRaVien));
                    }
                }
                else
                {
                    chayThanTemple = new PhieuChayThanBll().GetDanhSachBenhNhanChayThanTheoNgay(ngayLamViec, denNgay, khuVuc, dmYeuCau.MaYeuCau, cboLoaiChay.SelectedIndex
                                                                , rightClick2, rightClick3, rightClick4, rightClick5, cboLoaiBenhNhan.SelectedIndex, cboThongKe.SelectedIndex)
                                                           .FindAll(c => c.NgayChay >= c.NgayRaVien);
                        
                }
                if (chayThanTemple == null || chayThanTemple.Count <= 0)
                {
                    DXMessageBox.Show("Không tìm thấy bệnh nhân theo yêu cầu tìm kiếm.", "Thông báo", MessageBoxButton.OK, MessageBoxImage.Asterisk);
                }
                //lblTongSoLan.Content = String.Format("Tổng số BN: {0} Tổng lần chạy: {1}", tongBenhNhan, chayThanTemple.Count());

                rptThongKeTongBNChayThan report = new rptThongKeTongBNChayThan();
                report.DataSource = chayThanTemple;
                report.BindDetail(cboThongKe.SelectedIndex == 0);
                report.BindGroupFooter(chayThanTemple.Count());
                XtraReportPreviewModel model = new XtraReportPreviewModel(report);
                documentPreview1.Model = model;
                model.Report.CreateDocument(false);
            }
            catch (Exception)
            {
                DXMessageBox.Show("Thống kê không thành công", "Thông báo", MessageBoxButton.OK, MessageBoxImage.Error);
            }
            
        }

        private void buttonTaoPhieu_Click(object sender, RoutedEventArgs e)
        {
            HienThiDanhSachBenhNhan(datePickerNgayLamViec.DateTime, datePickerDenNgay.DateTime,cboKhuVuc.DisplayText.Trim());
        }

        private void buttonDong_Click(object sender, RoutedEventArgs e)
        {
            this.Close();
        }

        private void cboThongKe_SelectedIndexChanged(object sender, RoutedEventArgs e)
        {
            if (cboThongKe.SelectedIndex == 0)
            {
                radTatCa.IsChecked = true;
                radTatCa.IsEnabled = true;
                radRaVien.IsEnabled = true;
            }
            else
            {
                radDangDieuTri.IsChecked = true;
                radTatCa.IsEnabled = false;
                radRaVien.IsEnabled = false;
            }
        }

    }
}
